# 三、图表类型
import matplotlib.pyplot as plt
from matplotlib_inline import backend_inline
import numpy as np

# # 准备数据
# x = [ 1, 2, 3, 4, 5 ] # 数据的 x 值
# y1 = [ 0, 1, 2, 3, 4 ] # 数据的 y1 值
# y2 = [ 1, 2, 3, 4, 5 ] # 数据的 y2 值
# y3 = [ 2, 3, 4, 5, 6 ] # 数据的 y3 值
# y4 = [ 3, 4, 5, 6, 7 ] # 数据的 y4 值
# y5 = [ 4, 5, 6, 7, 8 ] # 数据的 y5 值

# # 3.2 二维图
# # 仅演示 plot 线型图函数
# # （1）设置颜色
# # plot()函数含 color 参数，可以设置线条的颜色，如示例所示。
# Fig1, ax1 = plt.subplots()
# ax1.plot(x, y1, color='#7CB5EC')
# ax1.plot(x, y2, color="#F7A35C")
# ax1.plot(x, y3, color='#A2A2D0')
# ax1.plot(x, y4, color='#F6675D')
# ax1.plot(x, y5, color='#47ADC7')
# Fig1.show()
# Fig1.waitforbuttonpress()
# # plt.show()

# # （2）设置风格
# # plot()函数含 linestyle 参数，可以设置线条的风格，如示例所示。
# # 在设置线条风格时，
# # '-'表示实线，
# # '--'表示虚线，
# # '-.'表示点虚线，
# # ':'表示点线，
# # ' '表示隐藏该线条。
# Fig2, ax2 = plt.subplots()
# ax2.plot(x, y1, linestyle= '-')
# ax2.plot(x, y2, linestyle= '--')
# ax2.plot(x, y3, linestyle= '-.')
# ax2.plot(x, y4, linestyle= ':')
# ax2.plot(x, y5, linestyle= '')
# Fig2.show()
# Fig2.waitforbuttonpress()

# # （3）设置粗细
# # plot()函数含 linewidth 参数，可以设置线条的粗细，如示例所示。
# # 在设置线条粗细时，数字表示磅数，一般以 0.5 至 3 为宜。
# Fig3, ax3 = plt.subplots()
# ax3.plot(x, y1, linewidth= 0.5)
# ax3.plot(x, y2, linewidth= 1)
# ax3.plot(x, y3, linewidth= 1.5)
# ax3.plot(x, y4, linewidth= 2)
# ax3.plot(x, y5, linewidth= 2.5)
# Fig3.show()
# Fig3.waitforbuttonpress()


# # （4）设置标记
# # plot()函数含 marker 参数，可以设置线条的标记，如示例所示。
# # 标记的尺寸可以由 markersize 参数调整，其值以 3 至 9 为宜。
# Fig4, ax4 = plt.subplots()
# ax4.plot(x, y1, marker= '.')
# ax4.plot(x, y2, marker= 'o')
# ax4.plot(x, y3, marker= '^')
# ax4.plot(x, y4, marker= 's')
# ax4.plot(x, y5, marker= 'D')
# Fig4.show()
# Fig4.waitforbuttonpress()

# # （5）综合应用
# # 现综合上述所有的线条属性，绘制图形如示例所示。
# # 请留意 y5 的线条，此时为散点，这种方式画散点图比 plt.scatter( )效率更高。
# # 因为，所有点属性一样，而不是一个一个去渲染
# Fig5, ax5 = plt.subplots()
# ax5.plot(x, y1, color='#7CB5EC', linestyle='-', linewidth=2, marker='o', markersize=6)
# ax5.plot(x, y2, color='#F7A35C', linestyle='--', linewidth=2, marker='^', markersize=6)
# ax5.plot(x, y3, color='#A2A2D0', linestyle='-.', linewidth=2, marker='s', markersize=6)
# ax5.plot(x, y4, color='#F6675D', linestyle=':', linewidth=2, marker='D', markersize=6)
# ax5.plot(x, y5, color='#47ADC7', linestyle=' ', linewidth=2, marker='o', markersize=6)
# Fig5.show()
# Fig5.waitforbuttonpress()

# # 3.3 网格图
# # 网格图，仅演示 imshow 函数
# # 准备数据

# x = np.linspace(0, 10, 1000) # 线性等分向量
# I = np.sin(x) * np.cos(x).reshape(-1, 1)
# Fig2, ax2 = plt.subplots()
# ax2.imshow(I)
# # Fig2.colorbar() # 配置颜色条面向对象方式此功能似乎是缺失的
# Fig2.show()
# Fig2.waitforbuttonpress()
# # 在 Matlab 方式中进行此操作。
# Fig1 = plt.figure()
# plt.imshow(I)
# plt.colorbar()
# plt.show()


# 3.4 统计图
# 统计图，仅演示 hist 函数
# hist 是统计学的函数，可以看清某分布的均值与标准差。

# 创建 1000 个标准正态分布的样本
data = np.random.randn(1000)

# Fig1 = plt.figure()
# plt.hist(data)
# plt.show()

# # （1）区间个数
# # bins 参数即区间划分的数量，默认为 10
# Fig2 = plt.figure()
# plt.hist(data, bins= 30)
# plt.show()
# # （2）透明度
# # Alpha 参数表示透明度，默认为 1
# Fig3 = plt.figure()
# plt.hist(data, alpha= 0.5)
# plt.show()
# （3）图表类型
# histtype 表示类型，
# 默认为'bar'，
# 'stepfilled'，图形浑然一体。
# Fig4 = plt.figure()
# plt.hist(data, histtype= 'stepfilled')
# plt.show()
# # （4）直方图颜色
# # color 表示直方图的颜色，这里进行更改。
# Fig5 = plt.figure()
# plt.hist(data, color= '#a2a2d0')
# plt.show()
# # （5）边缘颜色
# # edgecolor 表示直方图边缘的颜色
# Fig6 = plt.figure()
# plt.hist(data, edgecolor= '#000000')
# plt.show()

# （5）综合应用
# 创建三个正态分布的样本
x1 = np.random.normal( 3, 1, 1000 )
x2 = np.random.normal( 6, 1, 1000 )
x3 = np.random.normal( 9, 1, 1000 )
Fig1 = plt.figure()
plt.hist( x1, bins=30, alpha=0.5, color='#7CB5EC', edgecolor='#FFFFFF' )
plt.hist( x2, bins=30, alpha=0.5, color='#A2A2D0', edgecolor='#FFFFFF' )
plt.hist( x3, bins=30, alpha=0.5, color='#47ADC7', edgecolor='#FFFFFF' )
Fig2 = plt.figure()
plt.hist( x1, bins=30, alpha=0.5, color='#7CB5EC', histtype='stepfilled', )
plt.hist( x2, bins=30, alpha=0.5, color='#A2A2D0', histtype='stepfilled', )
plt.hist( x3, bins=30, alpha=0.5, color='#47ADC7', histtype='stepfilled', )
plt.show()